Index.java
package org.codefilarete.stalactite.sql.ddl.structure;
import java.util.Set;
import org.codefilarete.tool.collection.Arrays;
import org.codefilarete.tool.collection.Collections;
import org.codefilarete.tool.collection.Iterables;
import org.codefilarete.tool.collection.KeepOrderSet;
/**
* Index on some columns
*
* @author Guillaume Mary
*/
public class Index<T extends Table<T>> {
private final T table;
private final KeepOrderSet<Column<T, ?>> columns;
private final String name;
private boolean unique = false;
public Index(String name, Column<T, ?> column, Column<T, ?> ... columns) {
this(name, Collections.addAll(Arrays.asSet(column), columns));
}
public Index(String name, Iterable<? extends Column<T, ?>> columns) {
// table is took from columns
this.table = Iterables.first(columns).getTable();
this.columns = Iterables.copy(columns, new KeepOrderSet<>());
this.name = name;
}
public Set<Column<T, ?>> getColumns() {
return columns;
}
public String getName() {
return name;
}
public boolean isUnique() {
return unique;
}
public void setUnique(boolean unique) {
this.unique = unique;
}
public Index<T> setUnique() {
setUnique(true);
return this;
}
public T getTable() {
return table;
}
}